<?php

/*
 * Correo DAL.
 * @Autor: Inicial.cl.
 */

class CorreoDAL {

    //METODO PARA GRABAR CORREO.
    public static function grabar($oCorreo) {
        try {
            $arr = array(
                "{#TITULO}" => $oCorreo->getTitulo(),
                "{#MENSAJE}" => $oCorreo->getMensaje(),
                "{#PARA}" => $oCorreo->getPara(),
                "{#CC}" => $oCorreo->getCc(),
                "{#CCO}" => $oCorreo->getCco(),
                "{#ENVIADO}" => $oCorreo->getEnviado(),
                "{#FECHAREGISTRO}" => $oCorreo->getFechaRegistro(),
                "{#FECHAENVIO}" => $oCorreo->getFechaEnvio()
            );
            $query = Util::getQuery($arr, CorreoSQL::$GRABAR_CORREO);
            $arrDatos = Bd::exec($query);

            $id = Bd::$IDENTITY; //Retorno id insertado
            return $id;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA EDITAR CORREO.
    public static function editar($oCorreo) {
        try {
            $arr = array(
                "{#ID}" => $oCorreo->getId(),
                "{#TITULO}" => $oCorreo->getTitulo(),
                "{#MENSAJE}" => $oCorreo->getMensaje(),
                "{#PARA}" => $oCorreo->getPara(),
                "{#CC}" => $oCorreo->getCc(),
                "{#CCO}" => $oCorreo->getCco(),
                "{#ENVIADO}" => $oCorreo->getEnviado(),
                "{#FECHAREGISTRO}" => $oCorreo->getFechaRegistro(),
                "{#FECHAENVIO}" => $oCorreo->getFechaEnvio()
            );
            $query = Util::getQuery($arr, CorreoSQL::$EDITAR_CORREO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA LISTAR CORREO.
    public static function listar() {
        try {
            $arr = array();
            $query = Util::getQuery($arr, CorreoSQL::$LISTAR_CORREO);
            $arrDatos = Bd::exec($query);
            $arrCorreo = array();

            if (count($arrDatos) > 0) {
                foreach ($arrDatos as $row) {
                    $oCorreo = new Correo();

                    $oCorreo->setId($row["id"]);
                    $oCorreo->setTitulo($row["titulo"]);
                    $oCorreo->setMensaje($row["mensaje"]);
                    $oCorreo->setPara($row["para"]);
                    $oCorreo->setCc($row["cc"]);
                    $oCorreo->setCco($row["cco"]);
                    $oCorreo->setEnviado($row["enviado"]);
                    $oCorreo->setFechaRegistro($row["fechaRegistro"]);
                    $oCorreo->setFechaEnvio($row["fechaEnvio"]);

                    $arrCorreo[] = $oCorreo;
                }
            }

            return $arrCorreo;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA OBTENER POR ID CORREO.
    public static function obtenerPorId($id) {
        try {
            $arr = array(
                "{#ID}" => $id
            );
            $query = Util::getQuery($arr, CorreoSQL::$OBTENER_CORREO_POR_ID);
            $arrDatos = Bd::exec($query);

            if (count($arrDatos) > 0) {
                $oCorreo = new Correo();

                foreach ($arrDatos as $row) {
                    $oCorreo->setId($row["id"]);
                    $oCorreo->setTitulo($row["titulo"]);
                    $oCorreo->setMensaje($row["mensaje"]);
                    $oCorreo->setPara($row["para"]);
                    $oCorreo->setCc($row["cc"]);
                    $oCorreo->setCco($row["cco"]);
                    $oCorreo->setEnviado($row["enviado"]);
                    $oCorreo->setFechaRegistro($row["fechaRegistro"]);
                    $oCorreo->setFechaEnvio($row["fechaEnvio"]);
                }
                return $oCorreo;
            }
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

    //METODO PARA ELIMINAR CORREO.
    public static function eliminar($id) {
        try {
            $arr = array("{#ID}" => $id);
            $query = Util::getQuery($arr, CorreoSQL::$ELIMINAR_CORREO);
            $arrDatos = Bd::exec($query);
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }
    
    //METODO PARA SETEAR CORREO COMO ENVIADO
    public static function setCorreoEnviado($idCorreo) {
        try {
            $arr = array(
                "{#ID}" => $idCorreo
            );
            $query = Util::getQuery($arr, CorreoSQL::$SET_CORREO_ENVIADO);
            $arrDatos = Bd::exec($query);
            
            return $idCorreo;
        } catch (Excepcion $e) {
            throw new Exception($e->getMessage());
        }
    }

}

?>